1. Field of the Invention
This invention relates generally to computers systems, and more particularly to the updating of computer code implemented to boot up a computer system.
2. Description of the Related Art
Today's personal computer systems provide users with a high degree of flexibility in terms of the number of peripheral devices that may be connected to a given system. For instance, users are able to connect additional internal and external peripheral devices to meet the storage or data access demands required to complete the user's job. Such peripheral devices can include internal or external hard drives, compact disc (CD) players, digital video disc (DVD) players, compact disc recordables (CD-Rs), etc.
To meet the connection needs for these peripheral devices, most computers have IDE connectors and PCI connectors built into the computer's motherboard. Typically, the IDE connectors are used to connect internal devices, such as, hard drives and CD-ROM drives. The PCI connectors are generally configured to receive host adapter cards, which allow the connection of both internal and external devices. As is well known, there are numerous types of host adapters, some of the most commonly used are SCSI host adapters, redundant array of inexpensive disk (RAID) host adapters, and the like. SCSI host adapters are one of the most popular adapters due to peripheral device arrangement flexibility and performance. For instance, one SCSI host adapter can serve as the communication link for up to 15 internal and external peripheral devices.
Most host adapters have option ROM chips integrated onto the printed circuit board of the host adapter card. The option ROM chip is typically an electrically erasable programmable read only memory (EEPROM), which stores program instructions that are used during the boot process of the computer system that has the host adapter card connected thereto. Without these program instructions, the host adapter card and any of the peripheral devices connected to the host adapter card will not be able to communicate with the host computer system, and thus, will be rendered useless. From time to time, the manufacturers of these host adapters find it useful to update the program instructions that are resident in the option ROM chips. Unfortunately, because more than one host adapter card may be connected to a particular computer system, this updating can become problematic in view of the limited space available in the system RAM for this function.
To further elaborate on this problem, it is useful to generally understand the booting process of a computer system having PCI host adapters connected thereto. During bootup, the system BIOS will assign each PCI host adapter to certain memory space in the system RAM. This memory space is used to enable the computer's operating system to communicate with particular registers that are resident on the PCI host adapter card. In general, the system RAM will ask each host adapter to identify how much RAM memory space it needs, and then, that space is allocated. It should be noted that there is only a fixed range of memory space that can be used for PCI devices. A further complication is that different computer manufacturers utilize different system BIOS, which allocate the available RAM memory space in different ways. Accordingly, the memory address location allocated for a given PCI device by one system BIOS may well be different if it is allocated by a system BIOS of another manufacturer.
In order to effectuate an update of the program instructions of a given option ROM chip, the host adapter containing the desired option ROM chip is identified. To update these program instructions, the entire contents of the program instructions also have to be written to the system RAM, in the same location that was previously allocated for the host adapter. Because program instruction updates continue to provide added functionality or operate to fix errors in existing code, the size of the update can be quite large. The problem here is, that the new code may be of a size that it may require memory space that is already occupied by other PCI devices. When this occurs, the update will not be made because there will be no space available in the system RAM. As can be appreciated, there are many reasons why there is a need to update the code in option ROMs, and if this updating is not possible, the computer user can lose some or fail to utilize all of the functionality provided by the peripheral devices that are connected to the host adapter.
In view of the foregoing, there is a need for a method and computer code utility for programming code updates into option ROM chips of host adapters.